package br.com.usjt.sge.estacionamento;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import br.com.usjt.sge.arduino.ArduinoXML;
import br.com.usjt.sge.arduino.ArquivoXML;
import br.com.usjt.sge.complemento.Endereco;
import br.com.usjt.sge.complemento.EnderecoRN;
import br.com.usjt.sge.complemento.Telefone;
import br.com.usjt.sge.complemento.TelefoneRN;
import br.com.usjt.sge.util.DAOFactory;

public class EstacionamentoRN {

	private EstacionamentoDAO estacionamentoDAO;
	
	public EstacionamentoRN() {

		this.estacionamentoDAO = DAOFactory.criaEstacionamentoDAO();
	}

	public String statusVagas() {
			
		ArquivoXML arquivo = new ArquivoXML();
		ArduinoXML arduino = arquivo.recuperaXML();
		String info = arduino.getStatusVaga();
			
		return info;
			

	}

	public void salvar(Estacionamento estacionamento) {

		Integer cod_estacionamento = estacionamento.getEstacionamento();

		Date data = new Date();

		if (cod_estacionamento == null || cod_estacionamento == 0) {
			estacionamento.setDataCadastro(data);

			this.estacionamentoDAO.salvar(estacionamento);

		} else {

			this.estacionamentoDAO.atualizar(estacionamento);

		}

	}

	/**
	 * 
	 * @param codigoEndereco
	 * @return
	 */
	public List<Estacionamento> pesquisarPorCodigoEndereco(
			Integer codigoEndereco) {

		return this.estacionamentoDAO
				.pesquisarPorCodigoEndereco(codigoEndereco);

	}

	public void excluir(Estacionamento estacionamento) {

		EnderecoRN enderecoRN = new EnderecoRN();
		TelefoneRN telefoneRN = new TelefoneRN();

		Telefone telefone = new Telefone();
		Endereco endereco = new Endereco();

		telefone = telefoneRN.buscarTelEstacionamento(estacionamento);
		telefoneRN.excluir(telefone);

		endereco = enderecoRN.buscarEndereco(estacionamento.getEndereco()
				.getEndereco());
		enderecoRN.excluir(endereco);
		this.estacionamentoDAO.excluir(estacionamento);
	}

	public Estacionamento carregar(Integer estacionamento) {
		return estacionamentoDAO.carregar(estacionamento);

	}

	public Estacionamento buscarPorUsuario(Integer cod_usuario) {

		return estacionamentoDAO.buscarPorUsuario(cod_usuario);
	}

	public Estacionamento buscarPorCNPJ(Long cnpj) {
		return this.estacionamentoDAO.buscarPorCNPJ(cnpj);
	}

	public List<Estacionamento> listar(Estacionamento estacionamento) {
		return null;

	}
}
